﻿using System;
using System.Data.SqlClient;
using System.Web.UI.WebControls;

public partial class AdminCP_Solicitudes : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        SessionValidation();
        ODSGlobal.SelectParameters["QueryString"].DefaultValue = "SELECT * FROM (SELECT Folio, Solicitud.Matricula, " +
                                   "Alumnos.Nombre + ' ' + Alumnos.Apellido AS [NombreAlumno], " +
                                   "CONVERT(VARCHAR(25), Solicitud.Solicitud_Fecha, 0) AS [FechaEnviado], " +
                                   "ROW_NUMBER() OVER (ORDER BY Solicitud.TimeStamp_FechaCreacion DESC) AS [RowNumber] " +
                                   "FROM Alumnos, Solicitud WHERE Alumnos.Matricula = Solicitud.Matricula " +
                                   "AND YEAR ( Solicitud.Solicitud_Fecha ) =  YEAR ( GETDATE() ) " +
                                   "AND MONTH ( Solicitud.Solicitud_Fecha ) <= MONTH ( GETDATE() ) " +
                                   "AND MONTH ( Solicitud.Solicitud_Fecha ) > (MONTH ( GETDATE() ) - 5)" +
                                   "AND Solicitud.Solicitud_Enviada = 1) AS TEMP " +
                                   "WHERE [RowNumber] BETWEEN @startRowIndex AND @lastRow" +
                                   "#SELECT COUNT(*) FROM Solicitud WHERE Solicitud.Solicitud_Enviada = 1";
    }

    // Activa de nuevo la solicitud del alumno en caso de que se requiera más información
    protected void HabilitarSolicitud(Object sender, CommandEventArgs a)
    {
        DatabaseConnection dbCon = new DatabaseConnection();
        String[] matriculaFolio = a.CommandArgument.ToString().Split(',');
        String query = "UPDATE Solicitud SET Solicitud.Solicitud_Enviada = 0 WHERE Solicitud.Folio =  @Folio " +
                       "AND Solicitud.Matricula = @Matricula";

        using (SqlCommand command = new SqlCommand(query))
        {
            command.Parameters.Add(new SqlParameter("@Matricula", matriculaFolio[0]));
            command.Parameters.Add(new SqlParameter("@Folio", matriculaFolio[1]));
            dbCon.ParameterizedExecuteNonQuery(command);
        }
        dbCon.CloseConnection();

        Response.Redirect("~/AdminCP/Solicitudes.aspx");
    }


    // Se envía a la página de reportes
    protected void VerSolicitud(Object sender, CommandEventArgs a)
    {
        String Folio = a.CommandArgument.ToString();
        Response.Redirect("~/AdminCP/Reportes.aspx?Folio=" + Folio);
    }


    // Se visualiza el historial del alumno
    protected void VerHistorialAlumno(Object sender, CommandEventArgs a)
    {
        String Matricula = a.CommandArgument.ToString();
        Session["SearchString"] = Matricula;
        Session["SearchType"] = "Matricula";
        Response.Redirect("~/Services/SearchResults.aspx");
    }


    protected void SessionValidation()
    {
        String SessionID = (String)Session["SessionID"];
        String UserType = (String)Session["UserType"];

        if (String.IsNullOrEmpty(SessionID) || String.IsNullOrEmpty(UserType))
        {
            Session.RemoveAll();
            Response.Redirect("~/Default.aspx");
        }
        else
        {
            if (!String.Equals(UserType, "Administradores"))
            {
                Session.RemoveAll();
                Response.Redirect("~/Default.aspx");
            }
        }
    }
}